package com.zhongwang.mms.gen.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class TProStatusChangeRecordExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public TProStatusChangeRecordExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andPscIdIsNull() {
            addCriterion("psc_id is null");
            return (Criteria) this;
        }

        public Criteria andPscIdIsNotNull() {
            addCriterion("psc_id is not null");
            return (Criteria) this;
        }

        public Criteria andPscIdEqualTo(Integer value) {
            addCriterion("psc_id =", value, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdNotEqualTo(Integer value) {
            addCriterion("psc_id <>", value, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdGreaterThan(Integer value) {
            addCriterion("psc_id >", value, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("psc_id >=", value, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdLessThan(Integer value) {
            addCriterion("psc_id <", value, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdLessThanOrEqualTo(Integer value) {
            addCriterion("psc_id <=", value, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdIn(List<Integer> values) {
            addCriterion("psc_id in", values, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdNotIn(List<Integer> values) {
            addCriterion("psc_id not in", values, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdBetween(Integer value1, Integer value2) {
            addCriterion("psc_id between", value1, value2, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscIdNotBetween(Integer value1, Integer value2) {
            addCriterion("psc_id not between", value1, value2, "pscId");
            return (Criteria) this;
        }

        public Criteria andPscProCodeIsNull() {
            addCriterion("psc_pro_code is null");
            return (Criteria) this;
        }

        public Criteria andPscProCodeIsNotNull() {
            addCriterion("psc_pro_code is not null");
            return (Criteria) this;
        }

        public Criteria andPscProCodeEqualTo(String value) {
            addCriterion("psc_pro_code =", value, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeNotEqualTo(String value) {
            addCriterion("psc_pro_code <>", value, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeGreaterThan(String value) {
            addCriterion("psc_pro_code >", value, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeGreaterThanOrEqualTo(String value) {
            addCriterion("psc_pro_code >=", value, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeLessThan(String value) {
            addCriterion("psc_pro_code <", value, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeLessThanOrEqualTo(String value) {
            addCriterion("psc_pro_code <=", value, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeLike(String value) {
            addCriterion("psc_pro_code like", value, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeNotLike(String value) {
            addCriterion("psc_pro_code not like", value, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeIn(List<String> values) {
            addCriterion("psc_pro_code in", values, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeNotIn(List<String> values) {
            addCriterion("psc_pro_code not in", values, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeBetween(String value1, String value2) {
            addCriterion("psc_pro_code between", value1, value2, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProCodeNotBetween(String value1, String value2) {
            addCriterion("psc_pro_code not between", value1, value2, "pscProCode");
            return (Criteria) this;
        }

        public Criteria andPscProNameIsNull() {
            addCriterion("psc_pro_name is null");
            return (Criteria) this;
        }

        public Criteria andPscProNameIsNotNull() {
            addCriterion("psc_pro_name is not null");
            return (Criteria) this;
        }

        public Criteria andPscProNameEqualTo(String value) {
            addCriterion("psc_pro_name =", value, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameNotEqualTo(String value) {
            addCriterion("psc_pro_name <>", value, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameGreaterThan(String value) {
            addCriterion("psc_pro_name >", value, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameGreaterThanOrEqualTo(String value) {
            addCriterion("psc_pro_name >=", value, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameLessThan(String value) {
            addCriterion("psc_pro_name <", value, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameLessThanOrEqualTo(String value) {
            addCriterion("psc_pro_name <=", value, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameLike(String value) {
            addCriterion("psc_pro_name like", value, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameNotLike(String value) {
            addCriterion("psc_pro_name not like", value, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameIn(List<String> values) {
            addCriterion("psc_pro_name in", values, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameNotIn(List<String> values) {
            addCriterion("psc_pro_name not in", values, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameBetween(String value1, String value2) {
            addCriterion("psc_pro_name between", value1, value2, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscProNameNotBetween(String value1, String value2) {
            addCriterion("psc_pro_name not between", value1, value2, "pscProName");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeIsNull() {
            addCriterion("psc_status_type is null");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeIsNotNull() {
            addCriterion("psc_status_type is not null");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeEqualTo(String value) {
            addCriterion("psc_status_type =", value, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeNotEqualTo(String value) {
            addCriterion("psc_status_type <>", value, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeGreaterThan(String value) {
            addCriterion("psc_status_type >", value, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeGreaterThanOrEqualTo(String value) {
            addCriterion("psc_status_type >=", value, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeLessThan(String value) {
            addCriterion("psc_status_type <", value, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeLessThanOrEqualTo(String value) {
            addCriterion("psc_status_type <=", value, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeLike(String value) {
            addCriterion("psc_status_type like", value, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeNotLike(String value) {
            addCriterion("psc_status_type not like", value, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeIn(List<String> values) {
            addCriterion("psc_status_type in", values, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeNotIn(List<String> values) {
            addCriterion("psc_status_type not in", values, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeBetween(String value1, String value2) {
            addCriterion("psc_status_type between", value1, value2, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscStatusTypeNotBetween(String value1, String value2) {
            addCriterion("psc_status_type not between", value1, value2, "pscStatusType");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusIsNull() {
            addCriterion("psc_before_status is null");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusIsNotNull() {
            addCriterion("psc_before_status is not null");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusEqualTo(Integer value) {
            addCriterion("psc_before_status =", value, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusNotEqualTo(Integer value) {
            addCriterion("psc_before_status <>", value, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusGreaterThan(Integer value) {
            addCriterion("psc_before_status >", value, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("psc_before_status >=", value, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusLessThan(Integer value) {
            addCriterion("psc_before_status <", value, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusLessThanOrEqualTo(Integer value) {
            addCriterion("psc_before_status <=", value, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusIn(List<Integer> values) {
            addCriterion("psc_before_status in", values, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusNotIn(List<Integer> values) {
            addCriterion("psc_before_status not in", values, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusBetween(Integer value1, Integer value2) {
            addCriterion("psc_before_status between", value1, value2, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscBeforeStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("psc_before_status not between", value1, value2, "pscBeforeStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusIsNull() {
            addCriterion("psc_after_status is null");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusIsNotNull() {
            addCriterion("psc_after_status is not null");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusEqualTo(Integer value) {
            addCriterion("psc_after_status =", value, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusNotEqualTo(Integer value) {
            addCriterion("psc_after_status <>", value, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusGreaterThan(Integer value) {
            addCriterion("psc_after_status >", value, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("psc_after_status >=", value, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusLessThan(Integer value) {
            addCriterion("psc_after_status <", value, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusLessThanOrEqualTo(Integer value) {
            addCriterion("psc_after_status <=", value, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusIn(List<Integer> values) {
            addCriterion("psc_after_status in", values, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusNotIn(List<Integer> values) {
            addCriterion("psc_after_status not in", values, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusBetween(Integer value1, Integer value2) {
            addCriterion("psc_after_status between", value1, value2, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscAfterStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("psc_after_status not between", value1, value2, "pscAfterStatus");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateIsNull() {
            addCriterion("psc_change_date is null");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateIsNotNull() {
            addCriterion("psc_change_date is not null");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateEqualTo(Date value) {
            addCriterionForJDBCDate("psc_change_date =", value, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateNotEqualTo(Date value) {
            addCriterionForJDBCDate("psc_change_date <>", value, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateGreaterThan(Date value) {
            addCriterionForJDBCDate("psc_change_date >", value, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("psc_change_date >=", value, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateLessThan(Date value) {
            addCriterionForJDBCDate("psc_change_date <", value, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("psc_change_date <=", value, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateIn(List<Date> values) {
            addCriterionForJDBCDate("psc_change_date in", values, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateNotIn(List<Date> values) {
            addCriterionForJDBCDate("psc_change_date not in", values, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("psc_change_date between", value1, value2, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeDateNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("psc_change_date not between", value1, value2, "pscChangeDate");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdIsNull() {
            addCriterion("psc_change_operator_id is null");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdIsNotNull() {
            addCriterion("psc_change_operator_id is not null");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdEqualTo(Integer value) {
            addCriterion("psc_change_operator_id =", value, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdNotEqualTo(Integer value) {
            addCriterion("psc_change_operator_id <>", value, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdGreaterThan(Integer value) {
            addCriterion("psc_change_operator_id >", value, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("psc_change_operator_id >=", value, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdLessThan(Integer value) {
            addCriterion("psc_change_operator_id <", value, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdLessThanOrEqualTo(Integer value) {
            addCriterion("psc_change_operator_id <=", value, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdIn(List<Integer> values) {
            addCriterion("psc_change_operator_id in", values, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdNotIn(List<Integer> values) {
            addCriterion("psc_change_operator_id not in", values, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdBetween(Integer value1, Integer value2) {
            addCriterion("psc_change_operator_id between", value1, value2, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIdNotBetween(Integer value1, Integer value2) {
            addCriterion("psc_change_operator_id not between", value1, value2, "pscChangeOperatorId");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIsNull() {
            addCriterion("psc_change_operator is null");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIsNotNull() {
            addCriterion("psc_change_operator is not null");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorEqualTo(String value) {
            addCriterion("psc_change_operator =", value, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorNotEqualTo(String value) {
            addCriterion("psc_change_operator <>", value, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorGreaterThan(String value) {
            addCriterion("psc_change_operator >", value, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorGreaterThanOrEqualTo(String value) {
            addCriterion("psc_change_operator >=", value, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorLessThan(String value) {
            addCriterion("psc_change_operator <", value, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorLessThanOrEqualTo(String value) {
            addCriterion("psc_change_operator <=", value, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorLike(String value) {
            addCriterion("psc_change_operator like", value, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorNotLike(String value) {
            addCriterion("psc_change_operator not like", value, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorIn(List<String> values) {
            addCriterion("psc_change_operator in", values, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorNotIn(List<String> values) {
            addCriterion("psc_change_operator not in", values, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorBetween(String value1, String value2) {
            addCriterion("psc_change_operator between", value1, value2, "pscChangeOperator");
            return (Criteria) this;
        }

        public Criteria andPscChangeOperatorNotBetween(String value1, String value2) {
            addCriterion("psc_change_operator not between", value1, value2, "pscChangeOperator");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}